﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataAccessLayer;
using BusinessLogicLayer;
using System.Globalization;

namespace ChamCong.Admin
{
    public partial class GiaoViec1 : BasePage
    {

        NhanVienBLL nvBLL = new NhanVienBLL();
        GiaoViecBLL gvBLL = new GiaoViecBLL();
        CT_GiaoViecBLL ctgvBLL = new CT_GiaoViecBLL();
        PhanQuyenBLL pq = new PhanQuyenBLL();
        QuanLyPhanQuyenBLL q = new QuanLyPhanQuyenBLL();

        public static int _mapb;
        public static DateTime _tuNgay;
        public static DateTime _denNgay;
        public static int _magv;

        protected void Page_Load(object sender, EventArgs e)
        {

            try
            {
                int _MaNV = Convert.ToInt32(Session["MaNV"]);
                _mapb = nvBLL.TimPhongBan(_MaNV);

                if (!IsPostBack)
                {
                    //Ma phong ban
                    //_mapb = 3;
                    btnGiaoViec.Visible = false;
                    gvCTGiaoViec.Visible = false;
                    List<NHANVIEN2> _lsnv = nvBLL.DSNhanVien2(_mapb, "");
                }

            }
            catch { }
        }

        protected void gvNhanVien_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            GridViewRow gvr = (GridViewRow)e.Row;

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Find your controls
                Button _button = (Button)gvr.FindControl("btnSua");

                // this is ghetto, but you can, add orderid and other data to attributes so we can grab them later           
                string ma = DataBinder.Eval(e.Row.DataItem, "MaGiaoViec").ToString();

                _button.Attributes.Add("MaGiaoViec", ma);
            } // end if this is a real row
        }

        /// <summary>
        /// Chuyển đổi mã trạng thái sang kiểu string
        /// </summary>
        /// <param name="trangthai"></param>
        /// <returns></returns>
        protected string AutoConvert(object trangthai)
        {
            //return (datetimenow != null ? string.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(datetimenow)) : "No DateTime");
            if (int.Parse(trangthai.ToString()) == 0)
            {
                return "Chưa có việc ...";
            }
            else if (int.Parse(trangthai.ToString()) == 1)
            {
                return "Chưa Giao";
            }
            else if (int.Parse(trangthai.ToString()) == 2)
            {
                return "Đã Giao";
            }
            else if (int.Parse(trangthai.ToString()) == 3)
            {
                return "Chờ Duyệt";
            }
            else if (int.Parse(trangthai.ToString()) == 4)
            {
                return "Đã Duyệt";
            }
            else //(int.Parse(trangthai.ToString()) == 4)
            {
                return "Không Duyệt";
            }
        }

        /// <summary>
        /// Chỉnh sửa thêm công việc cho mỗi nhân viên (bảng CT_GIAOVIEC)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSua_Click(object sender, EventArgs e)
        {
            Button _button = (Button)sender;
            _magv = int.Parse(_button.Attributes["MaGiaoViec"]);

            lbHoten.Visible = true;
            lbHoten.Text = "Họ tên nhân viên: " + gvBLL.LayGiaoViec(_magv).NHANVIEN.HoTen.ToString();

            gvCTGiaoViec.Visible = true;

            List<DGVCTGIAOVIEC> _lsctgv = ctgvBLL.LayDSCTGiaoViec2(_magv);
            gvCTGiaoViec.DataSource = _lsctgv;
            gvCTGiaoViec.DataBind();
        }

        protected void imgbtXoa_Click(object sender, EventArgs e)
        {
            ImageButton _imgbutton = (ImageButton)sender;
            int _macv = int.Parse(_imgbutton.Attributes["MaCongViec"]);
            try
            {
                ctgvBLL.Xoa(_macv);
                List<DGVCTGIAOVIEC> _lsctgv = ctgvBLL.LayDSCTGiaoViec2(_magv);
                gvCTGiaoViec.DataSource = _lsctgv;
                gvCTGiaoViec.DataBind();

                //kiểm tra công việc còn lại
                if (ctgvBLL.KiemTraTonTaiCongViec(_magv) == true)
                { }
                else
                {
                    //update trạng thái
                    GIAOVIEC gv = new GIAOVIEC();
                    gv.MaGiaoViec = _magv;
                    gv.TrangThai = 0;
                    gvBLL.Sua(gv);

                    List<DGVGIAOVIEC> _ls = gvBLL.LayDSGiaoViec(_mapb, _tuNgay);
                    gvNhanVien.DataSource = _ls;
                    gvNhanVien.DataBind();
                }
            }
            catch { }
        }

        protected void gvctGiaoViec_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            GridViewRow gvr = (GridViewRow)e.Row;

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Find your controls
                ImageButton _imgbutton = (ImageButton)gvr.FindControl("imgbtXoa");

                // this is ghetto, but you can, add orderid and other data to attributes so we can grab them later           
                string ma = DataBinder.Eval(e.Row.DataItem, "MaCongViec").ToString();

                _imgbutton.Attributes.Add("MaCongViec", ma);
            } // end if this is a real row
        }

        /// <summary>
        /// Giao việc cho nhân viên trong phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnGiaoViec_Click(object sender, EventArgs e)
        {
            try
            {
                gvBLL.GiaoViec(_tuNgay, _mapb);

                sbcMsgBox1.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Success, "Thông báo", "Việc đã được giao!");

                List<DGVGIAOVIEC> _ls = gvBLL.LayDSGiaoViec(_mapb, _tuNgay);
                gvNhanVien.DataSource = _ls;
                gvNhanVien.DataBind();
            }
            catch{}
        }

        /// <summary>
        /// Xem danh sách nhân viên được giao việc trong phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnXem_Click(object sender, EventArgs e)
        {
            IFormatProvider format = new CultureInfo("vi-VN");

            lbHoten.Visible = false;
            //Kiểm tra nhập liệu trống
            if (txtTuNgay.Text == "")
            {
                sbcMsgBox1.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Nhập ngày đầu tiên của tuần!");
            }
            else
            {
                _tuNgay = Convert.ToDateTime(txtTuNgay.Text, format);
                //_tuNgay = DateTime.ParseExact(txtTuNgay.Text, "dd/MM/yyyy", null);

                //Kiểm tra ngày đầu tuần
                if (_tuNgay.DayOfWeek.ToString().Trim() != "Monday")
                {
                    sbcMsgBox1.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Đầu Tuần phải là thứ Hai!");
                }
                else
                {
                    
                    //Kiểm tra tồn tại giao việc của phòng
                    if (gvBLL.KiemTraTonTai(_tuNgay, _mapb) == true)
                    { }
                    else
                    {
                        //nếu không có thì thêm danh sách nhân viên của phòng vào danh sách giao việc
                        List<NHANVIEN2> _lsNV = nvBLL.DSNhanVien2(_mapb, "");
                        gvBLL.ThemDSGiaoViec(_lsNV, _tuNgay);
                    }

                    btnGiaoViec.Visible = true;
                    gvCTGiaoViec.Visible = false;
                    List<DGVGIAOVIEC> _ls = gvBLL.LayDSGiaoViec(_mapb, _tuNgay);
                    gvNhanVien.DataSource = _ls;
                    gvNhanVien.DataBind();
                }
            }
        }

        /// <summary>
        /// Thêm công việc vào bảng CT_GIAOVIEC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvCTGiaoViec_rowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Them"))
            {
                CT_GIAOVIEC ctGV = new CT_GIAOVIEC();
                if (((TextBox)gvCTGiaoViec.FooterRow.FindControl("txtTenCongViec")).Text == "" || ((TextBox)gvCTGiaoViec.FooterRow.FindControl("txtChiTieu")).Text == "")
                {
                    sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Warning, "Thông báo", "Nhập đầy đủ dữ liệu");
                }
                else
                {
                    try
                    {
                        ctGV.TenCongViec = Convert.ToString(((TextBox)gvCTGiaoViec.FooterRow.FindControl("txtTenCongViec")).Text);
                        ctGV.MaDonVi = Convert.ToInt32(((DropDownList)gvCTGiaoViec.FooterRow.FindControl("drDonVi")).SelectedValue);
                        if (ctgvBLL.KiemTraTonTai((string)ctGV.TenCongViec, (int)ctGV.MaDonVi, _magv) == true)
                        {
                            sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Warning, "Thông báo", "Công việc đã tồn tại");
                        }
                        else
                        {
                            ctGV.ChiTieu = Convert.ToDouble(((TextBox)gvCTGiaoViec.FooterRow.FindControl("txtChiTieu")).Text);
                            ctGV.HeSo = Convert.ToDouble(((DropDownList)gvCTGiaoViec.FooterRow.FindControl("drHeSo")).SelectedValue);
                            ctGV.MaGiaoViec = _magv;
                            ctgvBLL.Them(ctGV);

                            List<DGVCTGIAOVIEC> _lsctgv = ctgvBLL.LayDSCTGiaoViec2(_magv);
                            gvCTGiaoViec.DataSource = _lsctgv;
                            gvCTGiaoViec.DataBind();
                        }
                    }
                    catch
                    {
                        sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Dữ liệu nhập sai!");
                    }
                }
            }

            else if (e.CommandName.Equals("emptyThem"))
            {
                CT_GIAOVIEC ctGV = new CT_GIAOVIEC();
                GridViewRow emptyRow = gvCTGiaoViec.Controls[0].Controls[0] as GridViewRow;
                if (((TextBox)emptyRow.FindControl("txtTenCongViec")).Text == "" || ((TextBox)emptyRow.FindControl("txtChiTieu")).Text == "")
                {
                    sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Warning, "Thông báo", "Nhập đầy đủ dữ liệu");
                }
                else
                {
                    try
                    {
                        ctGV.TenCongViec = Convert.ToString(((TextBox)emptyRow.FindControl("txtTenCongViec")).Text);
                        ctGV.MaDonVi = Convert.ToInt32(((DropDownList)emptyRow.FindControl("drDonVi")).SelectedValue);
                        ctGV.ChiTieu = Convert.ToDouble(((TextBox)emptyRow.FindControl("txtChiTieu")).Text);
                        ctGV.HeSo = Convert.ToDouble(((DropDownList)emptyRow.FindControl("drHeSo")).SelectedValue);
                        ctGV.MaGiaoViec = _magv;
                        ctgvBLL.Them(ctGV);

                        List<DGVCTGIAOVIEC> _lsctgv = ctgvBLL.LayDSCTGiaoViec2(_magv);
                        gvCTGiaoViec.DataSource = _lsctgv;
                        gvCTGiaoViec.DataBind();

                        //Update trạng thái
                        GIAOVIEC gv = new GIAOVIEC();
                        gv.MaGiaoViec = _magv;
                        gv.TrangThai = 1;
                        gvBLL.Sua(gv);

                        List<DGVGIAOVIEC> _ls = gvBLL.LayDSGiaoViec(_mapb, _tuNgay);
                        gvNhanVien.DataSource = _ls;
                        gvNhanVien.DataBind();
                    }
                    catch
                    {
                        sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Dữ liệu nhập sai!");
                    }
                }

            }
        }
    }
}